package com.flower.utils;

public class UserContext {
    // 创建数据封装类
    private static class UserInfo {
        private final Long userId;
        private final String frontendType;

        public UserInfo(Long userId, String frontendType) {
            this.userId = userId;
            this.frontendType = frontendType;
        }

        public Long getUserId() {
            return userId;
        }

        public String getFrontendType() {
            return frontendType;
        }
    }

    // 修改ThreadLocal存储类型
    private static final ThreadLocal<UserInfo> contextHolder = new ThreadLocal<>();

    /**
     * 设置上下文信息（包含双参数）
     * @param userId 用户ID
     * @param frontendType 前端类型
     */
    public static void setContext(Long userId, String frontendType) {
        contextHolder.set(new UserInfo(userId, frontendType));
    }

    /**
     * 获取完整上下文对象
     */
    public static UserInfo getContext() {
        return contextHolder.get();
    }

    /**
     * 获取用户ID（兼容旧版调用）
     */
    public static Long getUserId() {
        UserInfo ctx = contextHolder.get();
        return ctx != null ? ctx.getUserId() : null;
    }

    /**
     * 获取前端类型
     */
    public static String getFrontendType() {
        UserInfo ctx = contextHolder.get();
        return ctx != null ? ctx.getFrontendType() : null;
    }

    /**
     * 清除上下文
     */
    public static void removeContext() {
        contextHolder.remove();
    }
}
